package models

import (
	"fmt"
	"github.com/fatih/structs"
	"gvb-server/Request"
	"gvb-server/global"
	"gvb-server/utils"
	"time"
)

type Advert struct {
	ID         uint   `gorm:"primaryKey" json:"id"`
	CreateDate int64  `json:"create_date"`
	UpdateDate int64  `json:"-"`
	DeletedAt  int64  `json:"deleted_at"`
	Status     int    `gorm:"default:1" json:"status"`
	Title      string `gorm:"size:32" json:"title"` //
	Href       string `json:"href"`                 // 跳转地址
	Images     string `json:"images"`               // 图片地址
	IsShow     bool   `json:"is_show"`              //`
}

func CreateData(i Request.AdvertCreateRequest) (Pub utils.PubStatus) {
	var m Advert
	m.Title = i.Title
	m.Href = i.Href
	m.Images = i.Images
	m.IsShow = i.IsShow
	m.CreateDate = time.Now().Unix()
	global.DB.Create(&m)
	fmt.Println("返回id：", m.ID) // 主键
	Pub.Status = utils.SUCCESS
	return
}

func DelByIds(s Request.AdvertDelRequest) {
	global.DB.Table("adverts").Where("id IN ?", s.Ids).Updates(map[string]interface{}{"status": 2})
}

func UpdateByIds(s Request.AdvertEditRequest) {

	// 可以使用第三方包 structs把结构体转成map 然后更新， 需要在结构体中使用  structs:"title"
	m := structs.Map(s) // 接收结构体 转map
	fmt.Println(m)
	global.DB.Table("adverts").Where("id IN ?", s.Id).Updates(map[string]interface{}{"title": s.Title})
	//global.DB.Table("adverts").Where("id IN ?", s.Id).Update("name", "hello")                   // 更新一个列
	//global.DB.Table("adverts").Where("id IN ?", s.Id).Updates(map[string]any{"title": s.Title}) // 方法二
}
